import { fileURLToPath, URL } from 'node:url'
import path from "node:path";
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
const pathSrc = path.resolve(__dirname, "src");
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // Auto import functions from Vue, e.g. ref, reactive, toRef...
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ["vue", "vue-router", "pinia"],
      // dirs: [path.resolve(pathSrc, "composables")],
      dts: path.resolve(pathSrc, "typings", "auto-imports.d.ts"),
    }),
    Components({
      /* 
      Components里边的配置详见 unplugin-vue-components的githhub的README
      // https://github.com/unplugin/unplugin-vue-components?tab=readme-ov-file#configuration
      */
      // "./src/**/*.{vue,js}" 是一种类似于通配符的语法
      // 使用 '**' 就可以递归地匹配src下面的每一层子目录
      // * 表示匹配任意数量的字符
      // "./src/**/" 就是递归地匹配任意一层目录
      /*
// 
  // relative paths to the directory to search for components.
  // 要搜索组件的目录的相对路径。
  dirs: ['src/components'],
  // valid file extensions for components.
  // 组件的有效文件扩展名
  extensions: ['vue'],
  // Glob patterns to match file names to be detected as components.
  // When specified, the `dirs` and `extensions` options will be ignored.
  // Glob模式，以匹配要检测为组件的文件名。
  //指定时，将忽略“目录”和“扩展名”选项。
  globs: ['src/components/*.{vue}'],
*/
      // 配置自动导入的文件夹 // 可以自动导入这里的所有.vue组件
      // 这里不配置，也可以自动导入默认'src/components'里的.vue组件
      // dirs: ['src/components'],
      // dirs:['src/**/'],
      dirs: ["src/x",'src/item'],
      dts: path.resolve(pathSrc, "typings", "components.d.ts"),
    }),
  ],
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
  },
});
